package com.solution.wx.product.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.solution.common.config.PublicConfigUtil;
import com.solution.common.dao.BaseDao;
import com.solution.common.service.impl.BaseServiceImpl;
import com.solution.wx.product.dao.ProductBrowseRecordDao;
import com.solution.wx.product.entity.ProductBrowseRecordEntity;
import com.solution.wx.product.service.ProductBrowseRecordService;

/**
 * 商品浏览记录service实现层
 * 
 * @author xu_cc
 * @date 2017-11-22 15:19:44
 */
@Service
public class ProductBrowseRecordServiceImpl extends BaseServiceImpl<ProductBrowseRecordEntity> implements ProductBrowseRecordService {

	/**
	 * 商品浏览记录接口
	 */
	@Autowired
	private ProductBrowseRecordDao productBrowseRecordDao;

	protected BaseDao<ProductBrowseRecordEntity> getDao() {
		return this.productBrowseRecordDao;
	}

	/**
	 * 删除
	 * 
	 * @param id
	 * @return
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2017年11月27日 下午2:40:20
	 */
	@Override
	public int deleteById(Long id) {
		return productBrowseRecordDao.deleteById(id);
	}

	/**
	 * 保存商品浏览记录
	 * 
	 * @param productBrowseRecordEntity
	 *            商品浏览记录实体
	 * @return Long 添加成功商品浏览记录的ID
	 * @author xu_cc
	 * @date 2017-11-22 15:19:44
	 */
	public long saveProductBrowseRecord(String userCode, Long productId) {
		ProductBrowseRecordEntity productBrowseRecord = new ProductBrowseRecordEntity();
		productBrowseRecord.setUserCode(userCode);
		productBrowseRecord.setProductId(productId);
		// 先更新
		int rows = productBrowseRecordDao.updateRecord(productBrowseRecord);
		if (rows > 0) {
			return 1l;
		} else {
			return productBrowseRecordDao.saveProductBrowseRecord(productBrowseRecord);
		}
	}

	/**
	 * 根据条件查询商品浏览记录
	 * 
	 * @param paramMap
	 * @return 数据列表
	 * @author xu_cc
	 * @date 2017-11-22 15:19:44
	 */
	@Override
	public List<ProductBrowseRecordEntity> listProductBrowseRecord(Map<String, Object> paramMap, Integer browserCount) {
		int browseRecord = 20;
		if(null == browserCount) {
			try {
				// 获取配置中的数据
				String browseRecordStr = PublicConfigUtil.readConfig("wx.product.browse.record");
				browseRecord = Integer.parseInt(browseRecordStr);
			} catch (Exception e) {
				e.printStackTrace();
			}
		} else {
			browseRecord = browserCount;
		}
		paramMap.put("productBrowseRecordCount", browseRecord);
		return productBrowseRecordDao.listProductBrowseRecord(paramMap);
	}

}
